/*
 * @(#)IPatientIdentityService.java
 * Date 2013-09-22
 * Version 1.0
 * Author Jim Horner
 * Copyright (c)2012
 */


package us.hornerscorners.lamppost.registry.service;

import org.hl7.v3.MCCIIN000002UV01;
import org.hl7.v3.PRPAIN201301UV02;
import org.hl7.v3.PRPAIN201302UV02;
import org.hl7.v3.PRPAIN201304UV02;

import us.hornerscorners.lamppost.exception.ServiceActionException;

import us.hornerscorners.lamppost.model.common.InstanceIdentifier;

import us.hornerscorners.lamppost.model.patient.PatientIdentity;


/**
 * Interface description
 *
 *
 * @version        v1.0, 2013-09-22
 * @author         Jim Horner
 */
public interface IPatientIdentityService {

    /**
     * Method description
     *
     *
     * @param identifier
     * @throws us.hornerscorners.lamppost.exception.ServiceActionException
     *
     */
    public abstract void addPatientIdentity(InstanceIdentifier identifier)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param body
     *
     * @return
     */
    public abstract MCCIIN000002UV01 addPatientIdentity(PRPAIN201301UV02 body);

    /**
     * Method description
     *
     *
     * @param body
     *
     * @return
     */
    public abstract MCCIIN000002UV01 resolvePatientIdentity(PRPAIN201304UV02 body);

    /**
     * Method description
     *
     *
     * @param identifier
     *
     * @return
     *
     * @throws ServiceActionException
     */
    public abstract PatientIdentity retrievePatientIdentity(InstanceIdentifier identifier)
            throws ServiceActionException;

    /**
     * Method description
     *
     *
     * @param body
     *
     * @return
     */
    public abstract MCCIIN000002UV01 revisePatientIdenity(PRPAIN201302UV02 body);
}
